iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 19
1
自我挑戰組

從0開始,一起學C語言吧!系列 第 19

從0開始,一起學C語言吧!(Day19)

  • 分享至 

  • xImage
  •  

Day19-變數儲存類別和遞迴函式

那我們今天要教的是變數儲存類別
這邊提供3種修飾字,這些修飾字可以直接加在宣告變數型態前
第一個是register修飾字
register修飾字是CPU上的memory,CPU要存取register裡的資料遠比存取memory裡的資料快
範例:

#include<stdio.h>
#include<stdlib.h>
int main(void){
	register int i;
	for(i=0;i<1000;i++)
	    printf("%d\t",i);
	system("pause");
}

印出:
https://ithelp.ithome.com.tw/upload/images/20190918/20119958l50Bs57TTP.png

第二個是static修飾字
static修飾字可以使變數只初始化一次
範例:

#include<stdio.h>
#include<stdlib.h>
int f(void);
int main(void){
	int i;
	for(i=1;i<5;i++)
	   printf("x=%d\n",f());
	system("pause");
}
int f(void){
	static int x=0;
	return x++;
}

印出:
https://ithelp.ithome.com.tw/upload/images/20190918/20119958wgl03Ln1eT.png

第三個是const修飾字
被const修飾的變數不能被改變,其編譯的程式會出現錯誤

範例:

#include<stdio.h>
#include<stdlib.h>
int main(void){
	const int x=1;
	    x++;
	system("pause");
	
}

編譯時
https://ithelp.ithome.com.tw/upload/images/20190918/201199582HCV5Q6pfD.png
解釋:變數x不可直接被修改

那再來是遞迴函式
遞迴函式(recursive function)的定義:一個函式直接(在程式敘述內直接呼叫函式本身)或是間接(程式敘述內呼叫其他函式,在該函式內又呼叫原先的函式)的呼叫函式本身,稱為遞迴函式
那下面的範例是計算n階乘n!,可以利用n!=n*(n-1)的公式來計算

#include<stdio.h>
#include<stdlib.h>
int factorial(int);
int main(void){
	int n;
	printf("Input n:");
	scanf("%d",&n);
	printf("%d=%d",n,factorial(n));
	system("pause");
}
int factorial(int n){
	if(n==1)
	   return 1;
	return n*factorial(n-1);
}

印出:
https://ithelp.ithome.com.tw/upload/images/20190918/20119958wY8gNJbpTN.png
那今天就先到這裡拉
謝謝大家今天的閱讀!!


上一篇
從0開始,一起學C語言吧!(Day18)
下一篇
從0開始,一起學C語言吧!(Day20)
系列文
從0開始,一起學C語言吧!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言